<?php
namespace Framework\Library\Utility;

/**
 * 数据验证类
 */
class DataVerify {
	
	/**
	 * 表单域不能为空，包括对
	 * @param string|array $value 来自POST或FILES的根键值
	 * @param array $params 无效的项
	 * @param string $msg
	 * @return boolean
	 */
	public function notEmpty($value, $params = array(), &$msg ){
		
		if (empty($value)){
			$msg = '没有填写有效数据';
			return false;
		}
		
		if (is_array($value)){
			
			if (isset($value['error'])){
				
				if (is_array($value['error'])){
				
					foreach ($value['error'] as $error){
							
						if ($error != UPLOAD_ERR_OK){
							$msg = '文件组中有没有上传成功的项';
							return false;
						}
							
					}
				
				}else{
				
					if ($value['error'] != UPLOAD_ERR_OK){
						$msg = '文件没有成功上传';
						return false;
					}
				
				}
				
			}else {
				
				foreach ($value as $value_item){
						
					if (!$value_item){
						$msg = '数据组中有未填写有效数据的项';
						return false;
					}
						
				}
				
			}
			
		}
		
		return true;
		
	}
	
	public function id( $value, $params = array(), &$msg ){
		
		if (!is_numeric($value)){
			$msg = '必须是数字';
			return false;
		}

		if (intval($value)<1){
			
			$msg = '必须大于0';
			return false;
			
		}
		
		return true;
		
	}
	
	public function name( $value, $params = array(), &$msg ){
		
		return true;
		
	}
	
	/**
	 * 根据给出的条件检查图像是否合要求
	 * @param string $value 文件路径
	 * @param array $params 检查依据
	 * @return boolean
	 */
	public function image( $value, $params = array(), &$msg ){
		
		$format = NULL;
		$width = NULL;
		$height = NULL;
		
		if (!empty($params)){
			
			if (!empty($params['format'])) $format = $params['format'];
			if (!empty($params['width'])) $width = $params['width'];
			if (!empty($params['height'])) $height = $params['height'];
			
		}
		
		$info = @getimagesize($value);
		if (!$info){
			
			$msg = '不是有效的图像文件';
			return false;
		
		}
		
		if ($format !== NULL) if (!in_array($info[2],$format)){
			
			$msg = '不是允许的图像格式';
			return false;
			
		}
		
		if ($width !== NULL) if ($info[0] != $width){
			
			$msg = '图像宽度不合要求';
			return false;
			
		}
		
		if ($height !== NULL) if ($info[1] != $height){
				
			$msg = '图像高度不合要求';
			return false;
				
		}
		
		return true;
		
	}
	
	/**
	 * 根据给出的条件检查文件的体积大小是否合符要求
	 * @param string $value 文件路径
	 * @param array $params 检查项及标准
	 * @param string $msg
	 * @return boolean
	 */
	public function fileSize( $value, $params=array(), &$msg ){
		
		$max = NULL;
		$min = NULL;
		
		if (!empty($params)){
			
			if (!empty($params['max'])) $max = intval($params['max']);
			if (!empty($params['min'])) $min = intval($params['min']);
			
		}
		
		$size = filesize($value);
		
		if ($max !== NULL) if ($size > $max){
			
			$msg = '文件体积太大了';
			return false;
			
		}
		if ($min !== NULL) if ($size < $min){
			
			$msg = '文件体积太小了';
			return false;
			
		}
		
		return true;
		
	}
	
}